Debugging Concurrent Programs with Sequential Analysis
نویسندگان
چکیده
The design of concurrent programs is error-prone due to the interaction between concurrently executing threads. Traditional automated techniques for finding errors in concurrent programs, such as model checking, explore all possible thread interleavings. Since the number of thread interleavings increases exponentially with the number of threads, such analyses have high computational complexity. In this paper, we present a novel analysis technique for concurrent programs that avoids this exponential complexity. Our analysis transforms a concurrent program into a sequential program that simulates the execution of a large subset of the behaviors of the concurrent program. The sequential program is then analyzed by a tool that only needs to understand the semantics of sequential execution. Our technique never reports false errors but may miss errors. We have implemented the technique in KIS, an automated checker for multithreaded C programs, and obtained promising initial results by using KIS to detect race conditions in Windows device drivers.
منابع مشابه
Dynamic Slicing of Concurrent Programs : Where are We and Where is the Right Way ? ( Extended
Program slicing has been developed as a standard technique used in various software engineering activit ies including program understanding, testing, debugging, maintenance, and complexity measurement. Although both static and dynamic slicing of sequential programs have been applied to software engineering practices, there still are some challenges, problems and issues in slicing concurrent pro...
متن کاملPDG : A Process-Level Debugger in GRAPE for communicating processes on transputer platforms*
In this paper, we describe the process-level debugger of GRAPE, a hierarchical graphical programming environment for concurrent programs. This debugger allows to debug concurrent programs that are based on communicating sequential processes. Its unique feature is that it clearly separates the identification of erroneous processes from the exact localisation of the bug on the source-level. This ...
متن کاملNondeterministic Parallel Control-Flow / Definition-Use Nets and their Applications
A natural and abstract representation of control flow and/or data flow in programs is crucial to many software engineering activities including software analysis, testing, debugging, maintenance, and complexity measurement. However, although a number of representations have been proposed and studied for representing control flow and/or data flow in a sequential program, until recently, little a...
متن کاملA Dataflow Approach to Event-based Debugging
This paper describes a novel approach to event-based debugging. The approach is based on a (coarsegrained) dataflow view of events: a high-level event is recognized when an appropriate combination of lower-level events on which it depends has occurred. Event recognition is controlled using familiar programming language constructs. This approach is more flexible and powerful than current ones. I...
متن کاملTowards Testing Concurrent Objects in CLP
Testing is a vital part of the software development process. It is even more so in the context of concurrent languages, since due to undesired task interleavings and to unexpected behaviours of the underlying task scheduler, errors can go easily undetected. This paper studies the extension of the CLP-based framework for glass-box test data generation of sequential programs to the context of con...
متن کامل